package com.jadows.tdog.optional;

import java.lang.annotation.*;

/**
 * component 增强
 * <p>
 * 处理如工厂类对多个同业务类型 bean 的平替
 *
 * @author taojiacheng
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface OptionalComponent {

    /**
     * beanName
     */
    String value();


    /**
     * 是否是基础的
     * <p>
     * 多个相同 name 的 bean 只有basic 不为 true 的才会被 加载
     * <p>
     * 适用于多驻地扩展
     */
    boolean basic() default false;

    /**
     * spring el 表达式
     * el 的返回结果为boolean, false则不注册该bean
     */
    String condition() default "";

}
